package controller;

import db.QueryDB;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.Observable;
import miscellaneous.Dificultad;
import model.ModeloSudoku;
import view.GUIAlternativa;
import view.GUICargaJugadores;
import view.GUIPrincipal;


public class ControllerGUINivelPrincipal  extends Observable  implements ActionListener {
    private GUIPrincipal guiP;
    private int[][] tableroCargado = new int [9][9];
    private static ControllerGUINivelPrincipal instanciaCont = null;
   

    public ControllerGUINivelPrincipal(){
     GUIPrincipal.crearInstanciaGUIPrincipal(); // new GUIPrincipal();
     guiP = GUIPrincipal.getInstanciaGUIPrincipal();
     guiP.setVisible(true);
     }
  
    public static ControllerGUINivelPrincipal getInstancia() {
        if (instanciaCont == null){
            throw new NullPointerException();
        }
        return instanciaCont;
    }


    public  static void crearInstancia(){
        if (instanciaCont == null){
            instanciaCont = new ControllerGUINivelPrincipal();
        }
    }
    
       
    @Override
    public void actionPerformed(ActionEvent e) {
       ModeloSudoku.crearInstanciaGenSud();
       ModeloSudoku gen = ModeloSudoku.getInstanciaGenSud();
       
        if (guiP.isActNuevoJuego() == true) {
          
           if (e.getActionCommand().equals("Facil")){
                System.out.println(guiP.isActNuevoJuego() == true);
                System.out.println(guiP.isActIniciarJuego() == true);
                gen.limpiarMatriz();
                limpiarTableroCargado();
                tableroCargado =  gen.cargar_juego(Dificultad.FACIL);
                guiP.iniciarJuego(tableroCargado);
                setChanged();
                notifyObservers("2");
                
           }
            if (e.getActionCommand().equals("Medio")){
                gen.limpiarMatriz();
                limpiarTableroCargado();
                setChanged();
                notifyObservers("2");
                tableroCargado =  gen.cargar_juego(Dificultad.MEDIO);
                guiP.iniciarJuego(tableroCargado);
            }
            if (e.getActionCommand().equals("Dificil")){
                gen.limpiarMatriz();
                limpiarTableroCargado();
                setChanged();
                notifyObservers("2");
                tableroCargado =  gen.cargar_juego(Dificultad.DIFICIL);
                guiP.iniciarJuego(tableroCargado);
            }
        }
        if (guiP.getActGUIA()== false){
            if (e.getActionCommand().equals("Facil")){
                tableroCargado =  gen.cargar_juego(Dificultad.FACIL);
                guiP.iniciarJuego(tableroCargado);
                
                
            }
            if (e.getActionCommand().equals("Medio")){
                tableroCargado =  gen.cargar_juego(Dificultad.MEDIO);
                guiP.iniciarJuego(tableroCargado);
            }
            if (e.getActionCommand().equals("Dificil")){
                tableroCargado =  gen.cargar_juego(Dificultad.DIFICIL);
                guiP.iniciarJuego(tableroCargado);
            }
       }
       else{
           GUIAlternativa guiA = GUIAlternativa.getIntanciaGUIAlternativa();
           if (e.getActionCommand().equals("Facil")){
                tableroCargado =  gen.cargar_juego(Dificultad.MEDIO);
                guiA.iniciarJuego(tableroCargado);
                
                
           }
           if (e.getActionCommand().equals("Medio")){
                tableroCargado =  gen.cargar_juego(Dificultad.MEDIO);
                guiA.iniciarJuego(tableroCargado);
           }
           if (e.getActionCommand().equals("Dificil")){
                tableroCargado =  gen.cargar_juego(Dificultad.DIFICIL);
                guiA.iniciarJuego(tableroCargado);
           }
       }
       
    }
    
    public void limpiarTableroCargado() {
        for (int f = 0; f < 9; f++){
            for (int c = 0; c < 9; c++){
 		tableroCargado[f][c] = 0;
            }
 	}
    }  

   public void cargarJugador() throws SQLException{
       
       QueryDB conexion = new QueryDB();
       GUICargaJugadores guiC = GUICargaJugadores.getIntanciaGUICarga();
       String nombre = guiC.getNombre();
       String tiempo = guiC.getTiempo();
       conexion.cargarTopTen(nombre, tiempo);

    }
   
    
   
}

    


